import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  state:{
    // 核心成员1.state  储存共享数据的
    // 1 直接访问  this.$store.state.count
    // 2 辅助函数  
    count:101,
    list:[ 1,2,3,4,5,6,7,8,9,10 ]
  },
  // 核心成员2 mutations  修改 state 的数据 
  mutations:{
    incremCount(state){
      state.count++
    },
    // 带参数的
    // 需要接受外部的参数   传什么就改什么
    // 参数1 state 参数2 传入的数据
    changeCount(state,sum){
      state.count = sum
    }
  },
  // 在 actions中不能直接操作state 
  // 而是要交给mutations 操作 state
  // 参数1 context 是 store 的对象（上下文对象），可以调用commit来触发 mutations
  actions:{
    asyncIncrem(context){
      setTimeout(() => {
        context.commit('incremCount')
      },1000)
    },
    getadd(context,num){
      setTimeout(() => {
        context.commit('changeCount',num)
      },1000)
    }
  },
  getters:{
    arr(state){
      return state.list.filter(item => item>5)
    }
  }
})

export default store